package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import negocio.Domicilio;
import negocio.Medicion;
import negocio.UsuarioResidencial;

public class usuarioResidencialDao {
	private static usuarioResidencialDao instancia;
	
	public static usuarioResidencialDao getInstancia(){
		if(instancia==null){
			instancia=new usuarioResidencialDao();
		}
		return instancia;
	}
	
	
	public void guardarUsuarioR(UsuarioResidencial r){
		Connection con=DataSource.obtenerConexion();
		
		
		try{
			String query="insert UsuarioResidencial values(?,?,?,?,?,?,?,?,?,?)";
			PreparedStatement ps=con.prepareStatement(query);
			ps.setString(1, r.getNombre());
			ps.setString(2, r.getApellido());
			ps.setInt(3, r.getNroDoc());
			ps.setString(4, r.getDomicilio().getCalle());
			ps.setInt(5, r.getDomicilio().getAltura());
			ps.setInt(6, r.getDomicilio().getPiso());
			ps.setString(7, r.getDomicilio().getDepto());
			ps.setString(8, r.getDomicilio().getCodigoPostal());
			ps.setString(9, r.getDomicilio().getLocalidad());
			ps.setString(10, r.getDomicilio().getProvincia());
			
			ps.execute();
			
			DataSource.cerrarConexion();
		}catch (Exception e) {
			System.out.println("Error en insert usuario residencial>>   "+e.getMessage());
		
		}
	}
	
	public Vector<UsuarioResidencial> obtenerUsuarioResidenciales(){
		Connection con=DataSource.obtenerConexion();
		Vector<UsuarioResidencial> usuarios=new Vector<UsuarioResidencial>();
		try{
			String query="Select * from UsuarioResidencial";
			Statement st=con.createStatement();
			ResultSet rs=st.executeQuery(query);
	
			while (rs.next()){
				UsuarioResidencial u=new UsuarioResidencial();
				u.setNombre(rs.getString("nombre"));
				u.setApellido(rs.getString("apellido"));
				u.setNroDoc(rs.getInt("nroDoc"));
				
				Domicilio dom=new Domicilio();
				dom.setCalle(rs.getString("calle"));
				dom.setAltura(rs.getInt("altura"));
				dom.setPiso(rs.getInt("piso"));
				dom.setDepto(rs.getString("depto"));
				dom.setCodigoPostal(rs.getString("codigoPostal"));
				dom.setLocalidad(rs.getString("localidad"));
				dom.setProvincia(rs.getString("provincia"));
			
				u.setDomicilio(dom);
				u.setMediciones(MedicionDao.getInstancia().obtenerMedicionesPorId(rs.getInt("nroDoc")));
				usuarios.add(u);
				
			}
	
			
		}catch(Exception e){
			System.out.println("Error al obtener usuarios residenciales>>   "+e.getMessage());
		}finally{
			DataSource.cerrarConexion();
		}
		return usuarios;
	}
	 public UsuarioResidencial obtenerUsuarioRporDoc(int nroDoc){
		 Connection con=DataSource.obtenerConexion();
		 ResultSet rs=null;
		 UsuarioResidencial u=new UsuarioResidencial();
		 try{
			 String query="select * from UsuarioResidencial where nroDoc=?";
			 PreparedStatement ps=con.prepareStatement(query);
			 ps.setInt(1, nroDoc);
			 rs=ps.executeQuery();
			 while(rs.next()){
				 
					u.setNombre(rs.getString("nombre"));
					u.setApellido(rs.getString("apellido"));
					u.setNroDoc(rs.getInt("nroDoc"));
					
					Domicilio dom=new Domicilio();
					dom.setCalle(rs.getString("calle"));
					dom.setAltura(rs.getInt("altura"));
					dom.setPiso(rs.getInt("piso"));
					dom.setDepto(rs.getString("depto"));
					dom.setCodigoPostal(rs.getString("codigoPostal"));
					dom.setLocalidad(rs.getString("localidad"));
					dom.setProvincia(rs.getString("provincia"));
			 }
			 
		 }catch(Exception e){
			 System.out.println("Error al obtener usuarios residenciales>>   "+e.getMessage());
		}finally{
			DataSource.cerrarConexion();
		}
		return u;
	}
}
	
	

